var form, layer, element;

// 公共js
$(function () {
     layui.use('element', function () {
        element = layui.element;
    });
    layui.use('layer', function () {
        layer = layui.layer;
    });
    layui.use('form', function () {
        form = layui.form;
        //各种基于事件的操作，下面会有进一步介绍
    });
   
    $(".J-manage").on('click', function () {
        $(".J-left-area").toggle();
        if ($(this).attr("class").includes('active')) {
            $(this).removeClass('active')
        } else {
            $(this).addClass("active");
        }
        $(".J-index").removeClass("active");
        return false;
    })

    $(window).on('load', function () {
        var preloaderFadeOutTime = 500;

        function hidePreloader() {
            var preloader = $('.spinner-wrapper');
            setTimeout(function () {
                preloader.fadeOut(preloaderFadeOutTime);
            }, 100);
        }
        hidePreloader();
    });

    var isNoData = $("tbody").children().length == 0
    if (isNoData) {
        $(".J-no-data").show()
    } else {
        $(".J-no-data").hide()
    }
})

function ajaxRequest(method, url, data, successfunc, errorfunc) {
    return $.ajax({
        type: method,
        url: url,
        data: data,
        success: function (res) {
            successfunc(res);
        },
        error: function () {
            errorAlert(true)
        }
    });
}

function errorAlert(isRequestErr, msg) {
    if (isRequestErr) {
        layer.open({
            title: '请求失败',
            content: '请求失败',
            icon: 5,
            anim: 6
        })
    } else {
        layer.open({
            title: '操作失败',
            content: msg,
            icon: 5,
            anim: 6
        })
    }
}

function successTrip(data) {
    layer.msg(data.msg, {
        icon: 6,
        time: 2000
    }, function () {
        location.href = data.url;
    })
}

/**
 * 初始化Active类
 * @param {*} name
 */
function initClass(name) {
    $(".J-index").removeClass('active');
    var a = $(".J-task-menu a");
    a.each(function (i, item) {
        if ($(item).attr('href').indexOf(name) != -1) {
            $(item).addClass("active");
        }
    });
}



/**
 * 封装自定义弹窗框
 * @param {*} configData  标题和按钮标题对象，如果只传字符串则默认为标题
 * @param {*} template 弹出框内容模板
 * @param {*} yesFunc 点击确认按钮回调
 * @param {*} successfunc 弹出成功函数
 * @param {*} btn2Func 第二个按钮的回调函数
 */
function layerOpenInit(configData, template, yesFunc, successfunc, btn2Func) {
    var btnTitle = configData.btnTitle ? configData.btnTitle : ["确认", "取消"]
    var index = layer.open({
        type: 1,
        area: '800px',
        maxmin: true,
        shade: 0.3,
        scrollbar: false,
        title: configData.title ? configData.title : configData,
        content: template,
        btn: btnTitle,
        yes: function (index, layero) { // 确认按钮
            yesFunc(index, layero)
            layer.close(index);
        },
        btn2: function (index, layero) {
            btn2Func ? btn2Func(index, layero): '';
            layer.close(index);
        },
        success: function (layero, index) {
            successfunc ? successfunc(layero, index) : '';
        },
        cancel: function (index, layero) {
            layer.close(index)
            return false;
        }
    })
}

/**
 * 确认框，默认确认删除
 * @param {*} url 必填 请求路径
 * @param {*} formData 必填 请求数据
 * @param {*} content 可选 弹出内容
 * @param {*} title 可选 弹出标题
 * @param {*} type 可选 请求类型 默认get
 * @param {*} optionFun 可选 操作方法
 */
function layerConfirm(url, formData, content, title, type, optionFun) {
    var content = content ? content : "是否删除该条数据？";
    var title = title ? title : "删除";
    var reqType = type ? type : 'get';

    var index = layer.confirm(content, {
        icon: 3,
        title: title
    }, function () {
        optionFun ? optionFun : ajaxRequest(reqType, url, formData, function (data) {
            data.code == 1 ? successTrip(data) : errorAlert(false, data.msg);
            parent.location.reload();
        });
        layer.close(index);
    });
}

/**
 * 封装layui日期组件
 */
function layuiDate(ele, type) {
    layui.use('laydate', function () {
        var laydate = layui.laydate

        laydate.render({
            elem: ele, //指定元素
            type: type ? type : 'date',
            format: type == 'time' ? 'HH:mm' : 'yyyy-MM-dd',
            theme: '#1E9FFF'
        });
    });
}

function serializeObject(obj) {
    var result = {}
    var params = obj.serializeArray()
    $.each(params, function (index, value) {
        result[value.name] = value.value;
    })
    return result
}

// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { // author: meizz
    var o = {
        "M+": this.getMonth() + 1, // 月份
        "d+": this.getDate(), // 日
        "h+": this.getHours(), // 小时
        "m+": this.getMinutes(), // 分
        "s+": this.getSeconds(), // 秒
        "q+": Math.floor((this.getMonth() + 3) / 3), // 季度
        "S": this.getMilliseconds() // 毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

function tableAdd(obj) {
    resetAll($(".J-add-form"));
    layerOpenInit(obj.title, obj.layerTemp, function (index) {
        var data = $(".J-add-form").serialize();
        data += '&create_time=' + new Date().Format("yyyy-MM-dd hh:mm:ss");
        // return
        ajaxRequest("post", obj.addUrl, data, function (data) {
            var errMesage = data.msg ? data.msg : data;
            data.code == 1 ? successTrip(data) : errorAlert(false, errMesage);
        })
    })
}

function tableBatchDel(checkStatus, url) {
    var data = checkStatus.data;
    if (data.length == 0) {
        layer.msg('请至少选择一条记录！', { icon: 7 });
        return;
    }

    // 只选了一条调用删除接口
    if (data.length == 1) {
        layerConfirm(url, {
            id: data[0].id
        })
        return;
    }

    var delList = [];
    for (var i = 0; i < data.length; i++) {
        delList.push(data[i].id);
    }

    var ids = JSON.stringify(delList);
    layerConfirm(url, { ids: ids }, "真的全部删除么?", "批量删除", "post")
}

function resetAll(eleObj) {
    eleObj.find('input[type=text],select,input[type=hidden],textarea').not("#schoolid").each(function () {
        $(this).val('');
    });
}

function openFrame(url, title, area) {
    layer.open({
        type: 2,
        title: title? title: '添加',
        // skin: 'layui-layer-rim', //加上边框
        area: area ? area : ['800px', '620px'], //宽高
        content: url,
    });
}

/**
 * 获取url的参数值
 * @param {*} variable 键名
 * @returns
 */
 function getUrlVariable(variable)
 {
        var query = window.location.search.substring(1);
        var vars = query.split("&");
        for (var i=0;i<vars.length;i++) {
                var pair = vars[i].split("=");
                if(pair[0] == variable){return pair[1];}
        }
        return(false);
 }